package com.annotation;

import static java.lang.Integer.*;

/**
 * @功能：获取反射对象Class五种方式
 * @版本： V1
 * @版权： 信息技术有限公司（http://www.mychery.com/）
 * @作者： 磐石战队开发组  00355760
 * @日期： 2024/8/10 14:10
 */
public class demo04 {

    public static void main(String[] args) throws ClassNotFoundException {

        // 通过Object类的方法getClass()继承给所有子类，final修饰无法重写native原生的
        User user = new User();
        Class c1 = user.getClass();

        // 任何数据类型都有静态的class属性,直接获得
        Class c2 = User.class;

        // 通过Class类的静态方法:forName(String className)
        Class c3 = Class.forName("com.annotation.User");

        // 基本内置类型的包装类都有一个Type属性
        Class c4 = Integer.TYPE;

        // 通过子类Class找到父类Class
        Class c5 = User.class.getSuperclass();


        // 通过ClassLoader类加载器获得Class对象
        ClassLoader loader = ClassLoader.getSystemClassLoader();
        // 获得类加载器对象
        Class c6 = loader.loadClass("com.annotation.User");
        System.out.println(c1.hashCode() + "," + c2.hashCode() + "," + c3.hashCode() + "," + c4.hashCode() + "," + c5.hashCode() + "," + c6.hashCode());
        // 356573597,356573597,356573597,356573597
    }
}

